using System;
using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Request;
using Sinacor.Servico.Bovespa.Ordens.BusinessEntity;

namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceImplementation.Translator
{
    public static class TranslateBetweenAlterarOrdemMegaBolsaRequestAndOrdemMegaBolsa
    {
        public static Sinacor.Servico.Bovespa.Ordens.BusinessEntity.OrdemMegaBolsa 
            TranslateAlterarOrdemMegaBolsaRequestToOrdemMegaBolsa
            (Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Request.AlterarOrdemMegaBolsaRequest from)
        {
            Sinacor.Servico.Bovespa.Ordens.BusinessEntity.OrdemMegaBolsa 
                to = new Sinacor.Servico.Bovespa.Ordens.BusinessEntity.OrdemMegaBolsa();
            to.DataOrdem = from.DataOrdem; //chave ordem
            to.NumeroOrdem = from.NumeroOrdem; //chave ordem
            to.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia; //chave ordem
            //to.Cliente.Apelido = from.ApelidoCliente;
            if (to.Cliente != null)
            {
                to.Cliente.Apelido = from.ApelidoCliente;
            }
            else
            {
                to.Cliente = new Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Cliente();
                to.Cliente.Apelido = from.ApelidoCliente;
            }

            if (from.TipoLiquidacao.HasValue)
                to.TipoLiquidacao = (BusinessEntity.Enum.TipoLiquidacao)from.TipoLiquidacao;
            else
                to.TipoLiquidacao = Sinacor.Servico.Bovespa.Ordens.BusinessEntity.Enum.TipoLiquidacao.Normal;

            to.Carteira = from.Carteira;
            to.PercentualReducaoAcrescimo = from.PercentualReducaoAcrescimo;
            return to;
        }
    }
}

